package cn.liuweiwei.controller;


import cn.liuweiwei.domain.Tag;
import cn.liuweiwei.service.TagService;
import cn.liuweiwei.util.Result;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("tags")
@CrossOrigin
public class TagController {

    @Autowired
    private TagService tagService;


    /**
     * 分页查询标签数据
     *
     * @param page  当前页
     * @param limit 每页条数
     * @return 查询到的标签列表
     */
    @GetMapping
    public Result findAllTagByPage(String page, String limit) {
        PageInfo<Tag> pageInfo = tagService.findAllTagByPage(page, limit);
        return Result.successWithCodeAndObj(pageInfo);
    }

    /**
     * 通过标签 id 查询博客列表
     *
     * @param id
     * @return 查询到的博客列表
     */
    @GetMapping("blogs/{id}")
    public Result findBlogsByTagId(@PathVariable("id") String id) {
        Tag tag = tagService.findBlogsByTagId(id);
        return Result.successWithObj(tag);
    }

    /**
     * 一次性查询所有标签数据
     *
     * @return 查询到的标签列表
     */
    @GetMapping("all")
    public Result findAllTag() {
        List<Tag> tagList = tagService.findAllTag();
        return Result.successWithObj(tagList);
    }

    /**
     * 插入一个标签
     *
     * @param tag
     * @return
     */
    @PostMapping
    public Result insertOneTag(@RequestBody Tag tag) {
        try {
            tagService.insertOneTag(tag);
            return Result.success("添加标签成功");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("添加标签失败");
        }
    }

    /**
     * 更新一个标签
     *
     * @param tag
     * @return
     */
    @PutMapping
    public Result updateOneTag(@RequestBody Tag tag) {
        try {
            tagService.updateOneTag(tag);
            return Result.success("更新标签成功");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("更新标签失败");
        }
    }

    /**
     * 通过标签 id 删除标签
     *
     * @param id
     * @return
     */
    @DeleteMapping
    public Result deleteOneTag(String id) {
        try {
            tagService.deleteById(id);
            return Result.success("删除标签成功");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("删除标签失败");
        }
    }

}
